package com.ruoyi.data.service;

import com.ruoyi.data.domain.DataList;
import com.ruoyi.data.domain.bo.getData.GetDataDataListBo;
import com.ruoyi.data.domain.vo.DataListVo;
import com.ruoyi.data.domain.bo.DataListBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 数据列表Service接口
 *
 * @author ruoyi
 * @date 2023-10-26
 */
public interface IDataListService {

    /**
     * 查询数据列表
     */
    DataListVo queryById(String dataId);

    /**
     * 查询数据列表列表
     */
    TableDataInfo<DataListVo> queryPageList(DataListBo bo, PageQuery pageQuery);

    /**
     * 查询数据列表列表
     */
    List<DataListVo> queryList(DataListBo bo);

    /**
     * 新增数据列表
     */
    Boolean insertByBo(DataListBo bo);

    /**
     * 修改数据列表
     */
    Boolean updateByBo(DataListBo bo);

    /**
     * 校验并批量删除数据列表信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);


    /**
     * 清理缓存
     */
    void cleatRedis(List<DataList> dataLists);


    /**
     * 根据分类获取一条全量数据
     * @param bo
     * @return
     */
    DataList getOneDataList(GetDataDataListBo bo, Long userId) throws Exception;

    /**
     * 批量插入
     * @param inList
     */
    void batchInsertByBo(List<DataList> inList);

    /**
     * 批量复制
     *
     * @param list
     * @param classificationId
     * @param status
     * @param sourceStatus
     * @return
     */
    boolean batchPaste(Long userId, List<String> list, Long beforeClassificationId, Long classificationId, String status, String sourceStatus);

    /**
     * 删除该分类下所有数据
     * @param list
     * @param b
     * @return
     */
    int removeDataListByDataClassificationId(List<Long> list, boolean b, int type);

    /**
     * 按搜索配置清空该分类下数据
     * @param classificationId
     * @return
     */
    int removeDataListByDataClassificationIdByConfigJson (Long classificationId);
}
